Commerce Server Pay-Per-View Demonstration [PPVDEMO]
====================================================
Helix Server's commerce feature allows an administrator
to restrict which users can access clips served by
Helix Server. When Helix Server receives a request for
secured content, it checks the list of authorized
users to see whether the request is from someone
who's allowed to receive it.

You don't need to add users to a list of authorized
users one-by-one; this demonstration shows how you
can use CGI and customized HTML files to allow users
to register themselves via Web pages. Use the
demonstration to see how Helix Server can integrate
with your Web server. Customize the files yourself
to match your site's own needs. 

Requirements for running the demonstration:
- Commerce Server Edition of Helix Server
- Web Server running on the same host as Helix Server
- Web Server configured to execute CGI programs


Steps to Set Up the Commerce Server PPV Demo
============================================
 1. Copy sample media files.
 2. Copy sample CGI program and configuration file to your Web server.
 3. Copy sample HTML pages to your web server. 
 4. Configure the Real Server Commerce feature. 
 5. Edit PPVDemo configuration file. 
 6. Edit sample HTML pages. 
 7. Browse to welcome.html and start registering.
 8. Web Browser Configuration Considerations.  
 9. Customizing the PPVDemo Source.
10. Debugging.  


1. Copy the Sample Media Files 

Copy the supplied sample media files to a secure Helix Server directory. 

Copy: (Helix Server main directory)/Commerce/media/sample1.rm 
      (Helix Server main directory)/Commerce/media/sample2.rm 

To: (Helix Server main directory)/Secure 

Note: PPVDemo can use any media files, as long as they are named "sample1.rm" or "sample2.rm".  If you change the media file name you will have to modify the secure and permissions.html pages.
  
2. Copy the Sample CGI Program and Configuration File to Your Web Server. 

Copy the ppvdemo.exe program and ppvdemo.ini file to an appropriate CGI directory of the your Web server. 

Copy: (Helix Server main directory)/Commerce/bin/ppvdemo.exe 
      (Helix Server main directory)/Commerce/bin/ppvdemo.ini

To:    A CGI directory served by your Web server 
  
Example: Copy ppvdemo.ini and ppvdemo.exe into the web servers directory where CGI scripts are installed.   
  
3. Copy Sample HTML Pages to Your Web Server.

Copy all supplied html  files to a Web Server document directory. 

Copy: (Helix Server main directory)/Commerce/html/permissions.html 
      (Helix Server main directory)/Commerce/html/register.html 
      (Helix Server main directory)/Commerce/html/secure.html 
      (Helix Server main directory)/Commerce/html/welcome.html 
      (Helix Server main directory)/Commerce/html/image/rm_.gif 
      (Helix Server main directory)/Commerce/html/image/rnlogo.gif 

To: The document path served by the your Web server.

Copy all supplied gif  files to an  Web Server image directory.

Copy:  (Helix Server main directory)/Commerce/html/image/rm_.gif 
       (Helix Server main directory)/Commerce/html/image/rnlogo.gif 

To: The image directory served by the your Web server.
  
Example: Copy *.html  into the c:\inetpub\wwwroot directory. and  
         Copy the *.gif into the C:\inetpub\wwwroot\image directory. 

4. Configure the Real Server Commerce feature 
  
Configure the Real Server security context by entering these values
into the Real Server Administrative Interface.  Test the Security
configuration directly from the Real Player before trying the PPVDemo. 

Define User Database using a Flat File style database
   Database Name =PPVDemo 
   Database Type = Flat File 
   Database File Name =C:\Program Files\Real\Helix Server\con_r_db 

Define Authentication using a PPVDemo realm
    Real Description=PPVDemo 
    Realm ID=(hostname).PPVDemo 
    Authentication Protocol=Basic 
    Database=PPVDemo 
    (Add a user) 

Establish Commerce Rules 
    Rule Name= PPVDemo 
    ProtectedPath=\secure 
    Database=PPVDemo   
    Evaluate Permissions=Yes  
    Allow Duplicates=Yes 
    Credential Type= Use User Authentication 
    Realm=PPVDemo 
    (Set access Permission) 

Real Player URL to test content -  http:\\(localhost):8008\ramgen\secure\sample1.rm or
                                   rtsp:\\(localhost)\secure\sample1.rm 
  
5. Edit the PPVDemo Configuration File 

The ppvdemo.ini file is a plain text file used by the PPVDemo program. Now that you've copied ppvdemo.ini to your Web server, open it in its new location and edit it with a text editor. On each line that does not begin with a semi-colon (;), substitute the correct values for any that do not match your Helix Server or Web server configuration. 
;Configuration File for the PPVDemo CGI Executable
; 
; The file contains variables which are read by the ppvdemo CGI executable. To run the 
; demo from a Web Server, edit the variables ; according to the comments above each entry.
;
; Note: This file uses ";" characters as comment ; marks at the start of each line.
;
;======================================================

[Urls]
;
; Provide the qualified URL to the permissions.html file
Permissions=http://hostname/path/permissions.html
;
; Provide the qualified URL to the secure.html file
Redirect=http://hostname/path/secure.html
;
; Provide the qualitifed URL to the CGI executable file
Cgi=http://hostname/cgi-bin/ppvdemo.exe
;=======================================================
; This Section is for Player Based Authentication Only
;
; Protocol used by the server to register the Player
Protocol=rtsp
;
; Provide the hostname or IP address of the Helix Server
Server=hostname
;
; Port user by the server for the streaming media protocol
Port=554
;
; Provide the value of the GUIDRegistrationPrefix variable
; in the Helix Server configuration file
Prefix=register
;
; Enter the file used by the Helix Server to capture PlayerIDs
File=register.rm
;
;=======================================================
; This Section Defines Helix Server Configuration Variables
;
[System]
;
; Provide the absolute path to the Helix Server PPV Plugin
Plugin=C:\Program Files\Real\Helix Server\Plugins\ppvb3260.dll
;
; Provide the absolute path and database name specified
; in the Helix Server configuration file
Database=C:\Program Files\Real\Helix Server\con_r_db
;
; Provide the AuthenticationRealm used for content in the
; Helix Server configuration file
Realm=hostname.ppvdemo
;
; Set the Authentication Mode (0= Player Based, 1= User Based)
AuthMode=1 
; Set the Debug Mode (0= Debug Off, 1= Debug On)
Debug=1 

Sample PPVDemo.ini file for the PPVDemo. 

[Urls]
    Permissions=http://localhost/permissions.html
    Redirect=http://localhost/secure.html
    Cgi=http://localhost/scripts/ppvdemo.exe
    Protocol=rtsp
    Server=localhost
    Port=554
    Prefix=register
    File=register.rm

[System]
    Plugin=C:\Program Files\Real\Helix Server\Plugins\ppvb3260.dll
    Database=C:\Program Files\Real\Helix Server\con_r_db
    Realm=PPVDemo
    AuthMode=1

Note:  The ppvdemo.exe program accepts two 
commands: insertuser or grantaccess. The Web pages supply
the commands, based on what the user selection. 

Example of insertuser command: 
     
 ppvdemo.exe?command=insertuser&userid=testuser&password=testpassword 

Example of grantaccess command:         

ppvdemo.exe?command=granataccess&userid=testuser&password=testpassword&url=secure/sample1.rm&urltype=0&permissiontype=0&permissionlength=0
ppvdemo.exe?command=granataccess&userid=testuser&password=testpassword&url=secure/sample1.rm&urltype=0&permissiontype=1&permissionlength=12/12/2012:12:00:00
ppvdemo.exe?command=granataccess&userid=testuser&password=testpassword&url=secure/sample1.rm&urltype=0&permissiontype=2&permissionlength=12 
ppvdemo.exe?command=granataccess&userid=testuser&password=testpassword&url=secure/sample1.rm&urltype=0&permissiontype=2&permissionlength=0 

6.  Edit Sample HTML Pages 

A. In register.html (which you just copied to your Web server), locate the following text: 

        <form action="http://localhost:80/cgi-bin/ppvdemo.exe" METHOD="GET"> \

   Replace the following text: 

         http://localhost:80/cgi-bin/ppvdemo.exe 

with the URL of the ppvdemo.exe file (which you copied to your Web server
in Step 2) as it resides on your Web server. 
  
B. In permissions.html (which you just copied to your Web server), find the text: 

        <form name="pForm" action="http://localhost:80/cgi-bin/ppvdemo.exe" METHOD="GET"> 

    Replace the following text: 

        http://localhost:80/cgi-bin/ppvdemo.exe 

with the URL of the ppvdemo.exe file (which you copied to your Web server in Step 2)
as it resides on your Web server. 

C. Also in permissions.html, locate the following text: 

Make sure the following text in this section matches the name and path
of the Secure directory on your Helix Server: 

        value="secure/sample1.rm" 
        value="secure/sample2.rm" 

D. In secure.html (which you just copied to your Web server),
locate the following lines:
 
        <li><A HREF="http://localhost:8080/ramgen/secure/sample1.rm"> Sample #1</A> 
        <li><A HREF="http://localhost:8080/ramgen/secure/sample2.rm"> Sample #2</A> 

If your Helix Server secure directory is not named "secure", replace the word
"secure" in the URL with the correct directory name. 

7. Browse to welcome.html and start registering 

Start the demonstration by pointing your browser to the welcome.html
page. Click on "Click here to register" and you'll see how you or your
users can self-register. 
  
8. Web Browser Configuration Considerations. 

The PPVDemo requires read and write access to the local directory. 
PPVDemo is a CGI style  program and will run as a child process on
the Web Server. The Web Server will need sufficient access rights
to access the Real Server Authentication Database.  

9. Customizing the PPVDemo Source

The PPVDemo program is a standalone application that
can be executed from either the command prompt or as
a CGI  program called by your Web browser.  The PPVDemo
executable can be built from the following files:


Source Code
    ppvdemo.cpp 
    ppvini.cpp 
    ppvtime.cpp

Header Files
    ppvdemo.h 
    ppvini.h 
    ppvtime.h


RMA SDK Header files
   pncom.h 
   pnresults.h 
   pntypes.h 
   rmaplugn.h 
   os.h (Win32 only)

CGIHTML - http://www.eekim.com Version 1.69
   cgi-lib.c 
   cgi-llist.c 
   html-lib.c 
   string-lib.c   
   cgi-lib.h 
   cgi-llist.h 
   html-lib.h 
   string-lib.h

Authentication Access routines
   ppvmd5c.c 
   ppvmd5chl.c 
   ppvmd5.h

Building  PPVdemo Preprocessor Definitions: 
  WIN32,_WIN32,_M_IX386,_LITTLE_ENDIAN, 
  _WINDOWS,STRICT,_DEBUG,DEBUG,_CONSOLE,_MBCS

Building the PPVDemo executable

    Win32 - Make a MVC project and include the above
            list of source files. Include the Preprocessor
            Definitions and compile into a executable.

    Unix - Construct a makefile that compiles the above
           list of source files into an executable.

10:  Debugging

Edit the PPVDemo.ini  and set debug=1.  This will instruct
PPVDemo to create in the local directory a file named
PPVDEMO.dmp.  The Debug option is helpful when you need to
debug the PPVDEMO application in an environment when running
as a child process of the Web Server.  If you set the debug=1
option on and you still do not receive a PPVDEMO.DMP file,
then you can assume that the Web Sever is running PPVDEMO with
insufficient access right.  PPVDemo.exe does not have access
rights  to write to the local disk. The PPVDemo debug sample
provides clues to where a possible invalid configuration can occur.

    ===PPVDemo====()
    Debug=(1)
    szDatabase=(C:\Program Files\Real\Helix Server\con_r_db)
    szPluginName=(C:\Program Files\Real\Helix Server\Plugins\ppvb3260.dll)
    Plugin instance found=()
    Interface IID_IRMAPPVDatabase found=()
    DataBase Opened=()
    szCommand=(insertuser)
    ===Insert User====()
    szUserid=(PPVDemo)
    szPasswrd=(password)
    szRealm=(PPVDemo)
    szAuthMode=(1)
    szPermissionsUrl=(http://localhostl/permissions.html)
    MD5Data=(PPVDemo:PPVDemo:password)
    authKey=(e50cfc58340386d2de2c0740b041bf6c)
    Cleanup=()

PPVDemo includes a third part source CGIHTML.  This product has an
interactive feature.  Once you have installed the PPVDEMO application
and have configured the PPVDEMO.ini file  you can execute PPVDEMO.exe
from the command.  line and PPVDEMO.exe will prompt you for a HTTP
statement.  You can enter it directly into the console and PPVDEMO.exe
will go to work on your submitted HTTP statement.

PPVDemo interactive Mode sample:

    C:\Inetpub\Scripts>ppvdemo
    
    --- cgihtml Interactive Mode ---
    Enter CGI input string. Remember to
    Press ENTER when done:
    
    http:\\localhost:8080\scripts\ppvdemo.exe?command=insertuser&userid=testuser&password=testpassword
